package com.bjsxt;

import java.util.List;
import java.util.Vector;

/**率低
 * Vector 容器类 ：Vector底层是用数组实现的，相关的方法都加了同步检查，
 ，因此“线程安全，效率低”，比如，indexOf方法增加了synchronized同步标记
 * Vector的使用与ArrayList是相同的，因为他们都 实现了List接口，对List接
 口中的抽象方法做了具体实现*/
public class TestVector {
    public static void main(String[] args) {
        //实例化Vector
        List<String> v = new Vector<>();
        v.add("as");
        v.add("b");
        v.add("cs");

        for (int i = 0; i < v.size(); i++) {
            System.out.println(v.get(i));
        }
        System.out.println("-----------------");
        for (String str : v) {
            System.out.println(str);
        }
        System.out.println("-------------");
        boolean flag = v.add("pp");
        System.out.println(flag);//添加成功是true
        v.add(1, "qq");
        for (int i = 0; i < v.size(); i++) {
            System.out.println(v.get(i));
        }
        System.out.println("------获取元素------");
        //异常：index<0||index>=size()*
        System.out.println(v.get(0));
        System.out.println(v.get(2));

        System.out.println("------替换元素-------");
        String val = v.set(1,"old");
        System.out.println(val);
        for(String str1:v){
            System.out.println(str1);
        }
        System.out.println("-----根据位置删除元素-----");
        String val1 = v.remove(1);
        System.out.println(val1);
        for(int i =0;i<v.size();i++){
            System.out.println(v.get(i));
        }
        System.out.println("-----根据指定元素删除-----");
        boolean val2 = v.remove("b");
        System.out.println(val2);
        for(String str2:v){
            System.out.println(str2);
        }
        System.out.println("-----清空元素-----");
        v.clear();

        System.out.println("----判断容器是否为空----");
        boolean flag3 = v.isEmpty();
        System.out.println(flag3);
        System.out.println("-------------");
        v.add("o");
        v.add("as");
        v.add("b");
        v.add("cs");
        v.add("cs");
        boolean flag4 = v.isEmpty();
        System.out.println(flag4);

        System.out.println("-----判断容器中是否包含指定元素-----");
        boolean flag5 = v.contains("cs");
        System.out.println(flag5);

        System.out.println("------查找元素第一次出现的位置------");
        int index = v.indexOf("cs");
        System.out.println(index);
        System.out.println("------查找元素最后一次出的位置-----");
        int index1 = v.lastIndexOf("cs");
        System.out.println(index1);
        System.out.println("------元素不存在----");
        int in = v.indexOf("oo");
        System.out.println(in);//-1

        System.out.println("------将Vector转换为Object数组------");
        Object[] arr = v.toArray();
        for(int i=0;i< arr.length;i++){
            String str3 = (String) arr[i];//逐个转换为String
            System.out.println(str3);
        }
        System.out.println("-----转换为泛型类型数组----");
        String[] str4 = v.toArray(new String[v.size()]);//注意：等号前后的String都 是数组[]
        for(int i =0;i< str4.length;i++){
            System.out.println(str4[i]);
        }
        System.out.println("-----容器的并集操作-----");
        Vector<String> v1 = new Vector<>();
        v1.add("a");
        v1.add("b");
        v1.add("c");
        Vector<String> v2 = new Vector<>();
        v2.add("e");
        v2.add("b");
        v2.add("c");

        boolean flag6 = v1.addAll(v2);
        System.out.println(flag6);
        for(String str5:v1){
            System.out.println(str5);
        }

        System.out.println("-------容器的交集操作-----");
        Vector<String> v3 = new Vector<>();
        v3.add("a");
        v3.add("b");
        v3.add("c");
        Vector<String> v4 = new Vector<>();
        v4.add("e");
        v4.add("b");
        v4.add("c");
        boolean flag7 = v3.retainAll(v4);
        System.out.println(flag7);
        for(String str6:v3){
            System.out.println(str6);
        }

        System.out.println("------容器的差集操作-----");
        Vector<String> v5 = new Vector<>();
        v5.add("a");
        v5.add("b");
        v5.add("c");
        Vector<String> v6 = new Vector<>();
        v6.add("e");
        v6.add("b");
        v6.add("c");
        boolean flag8 = v5.removeAll(v6);
        System.out.println(flag8);
        for(String str7:v5){
            System.out.println(str7);
        }

    }
}
